findBy*
Purpose
Dynamic method that uses the properties of the domain class to allow the creation of Grails query method expressions that return the first result of the queryExamples
Given the domain class Book
:class Book {
Long id
Long version
String title
Date releaseDate
String author
Boolean paperback
}
The following are all possible:def b = Book.findByTitle("The Shining")
b = Book.findByTitleAndAuthor("The Sum of All Fears", "Tom Clancy")
b = Book.findByReleaseDateBetween(firstDate, new Date())
b = Book.findByReleaseDateGreaterThanEquals(firstDate)
b = Book.findByReleaseDateLessThanEquals(firstDate)
b = Book.findByTitleLike("%Hobbit%")
b = Book.findByTitleIlike("%Hobbit%") // (since 0.5) - ignorecase
b = Book.findByTitleNotEqual("Harry Potter")
b = Book.findByReleaseDateIsNull()
b = Book.findByReleaseDateIsNotNull()
b = Book.findPaperbackByAuthor("Douglas Adams")
b = Book.findNotPaperbackByAuthor("Douglas Adams")
Description
GORM supports the notion of Dynamic Finders. The findBy*
method finds the first result for the given method expression.The following operator names can be used within the respective dynamic methods:
LessThan
LessThanEquals
GreaterThan
GreaterThanEquals
Between
Like
Ilike
(i.e. ignorecase like)
IsNotNull
IsNull
Not
NotEqual
And
Or
The above operator names can be considered keywords, and you will run into problems when querying domain classes that have one of these names used as property names. For more information on dynamic finders refer to the user guide.